Don't call XFreeColormap on foreign colormaps
authorMatthias Clasen <matthiasc@src.gnome.org>
Thu, 3 Apr 2008 05:08:05 +0000 (05:08 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Thu, 3 Apr 2008 05:08:05 +0000 (05:08 +0000)
svn path=/trunk/; revision=19969

ChangeLog
gdk/x11/gdkcolor-x11.c

index 032c4851a2d4b2e0accbbe57eb426824ead4a17d..aaccb2c6f310c0880f892fc9595002458bf249b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-04-02  Matthias Clasen  <mclasen@redhat.com>
+
+       * gdk/x11/gdkcolor-x11.c: Don't call XFreeColormap on foreign
+       colormaps.  Found by Daniel Berrange.
+
 2008-04-02  Björn Lindqvist  <bjourne@gmail.com>
 
        * tests/autotestfilechooser.c: Cover
index 3594892654e68dc6aac3964bc9c0725c453d373c..4531c99a23bef485d01ca7854c6b30f34ea83d21 100644 (file)
@@ -46,7 +46,7 @@ struct _GdkColormapPrivateX11
   GdkColorInfo *info;
   time_t last_sync_time;
 
-  guint foreign : 1;
+  gboolean foreign;
 };
 
 #define GDK_COLORMAP_PRIVATE_DATA(cmap) ((GdkColormapPrivateX11 *) GDK_COLORMAP (cmap)->windowing_data)
@@ -107,7 +107,7 @@ gdk_colormap_finalize (GObject *object)
 
   gdk_colormap_remove (colormap);
 
-  if (!private->screen->closed)
+  if (!private->screen->closed && !private->foreign)
     XFreeColormap (GDK_SCREEN_XDISPLAY (private->screen), private->xcolormap);
 
   if (private->hash)
@@ -1292,6 +1292,7 @@ gdk_x11_colormap_foreign_new (GdkVisual *visual,
   private->screen = screen;
   private->xcolormap = xcolormap;
   private->private_val = FALSE;
+  private->foreign = TRUE;
 
   colormap->size = visual->colormap_size;